package com.qww.test05;

public class Test05 {
    public static void main(String[] args) {
        new Person().eat(new Apple());
    }
}

class Person {
    void eat(Apple apple) {
        apple = apple.getPeeled();
        System.out.println("asdfghjkl;");
    }
}

class Peeler {
    static Apple peel(Apple apple) {
        // ...
        return apple;
    }
}

/**
 * <p>Apple需要调用Peeler.peel()方法， 它是一个外部的工具方法，将执行由于某种原因而必须放在Apple外部的操作
 * (也许因为该外部方法要应用于许多不同的类，而你却不想重复这些代码)。
 * 为了将其自身传递该外部方法，Apple必须使用<code>this</code>关键字。</p>
 */
class Apple {
    Apple getPeeled() {
        return Peeler.peel(this);
    }
}
